/**
 * Copyright(c) 2013 Jade Techonologies Co., Ltd.
 *
 * History:
 *   13-4-18 上午9:25 Created by dwzhang
 */
package com.jade.framework.security;

import java.security.PermissionCollection;
import java.security.Principal;

/**
 * 安全策略（Principal和权限的映射关系）
 * 用于适配不同Principal如何组织Permissions的规则
 *
 * @author dwzhang
 * @version 1.0 13-4-18 上午9:25
 */
public interface SecurityPolicy
{
    /**
     * 根据Principal数组返回权限集合
     *
     * @param principals Principal数组
     * @return 如果不存在相应的权限，那么返回<code>null</code>
     */
    public PermissionCollection getPermissions(Principal[] principals);

    /**
     * 合并权限集合（用于不同逻辑的合并扩展）
     *
     * @param pc1 PermissionCollection
     * @param pc2 PermissionCollection
     * @return 合并之后权限集合
     */
    public PermissionCollection merge(PermissionCollection pc1, PermissionCollection pc2);
}
